﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;

namespace AG.Datos.AccesoADatos.Implementacion
{
    public class Conexion
    {

        #region Atributos


        private static String _nombreBD = "Cuponera";
        private static String _fuenteDatos = "CHCVM\\SQLEXPRESS";
        private static String _cadenaDeConexion = "Data Source =" + _fuenteDatos + ";" + "Initial Catalog =" + _nombreBD + ";" + "Integrated Security = SSPI;";
        private static SqlConnection _conexion = new SqlConnection();

        #endregion

        #region Encapsulamiento

        public static SqlConnection AccederAconexion
        {
            get { return _conexion; }
            set { _conexion = value; }
        }

        public static String NombreBD
        {
            get { return _nombreBD; }
            set { _nombreBD = value; }
        }

        public static String FuenteDatos
        {
            get { return _fuenteDatos; }
            set { _fuenteDatos = value; }
        }

        public void SetCadenaConexion(String fuenteDatos, String nombreBD)
        {
            NombreBD = nombreBD;
            FuenteDatos = fuenteDatos;
            _cadenaDeConexion = "Data Source =" + fuenteDatos + ";" + "Initial Catalog =" + nombreBD + ";" + "Integrated Security = SSPI;";
        }

        /// <summary>
        /// Metodo que retorna la cadena de conexion actual a la base de datos.
        /// </summary>
        /// <returns></returns>
        public String GetCadenaConexion()
        {
            return (_cadenaDeConexion);
        }

        #endregion

        #region Constructores

        public Conexion()
        {

        }

        public Conexion(string nombreBD,string fuenteDatos)
        {
            _nombreBD = nombreBD;
            _fuenteDatos = fuenteDatos;
        }

        #endregion

        #region Metodos

        /// <summary>
        /// Metodo que permite establecer conexion con la base de datos.
        /// </summary>
        public void AbrirConexionBd()
        {
            try
            {
                String estadoConexion = null;
                estadoConexion = _conexion.State.ToString();
                
                if (estadoConexion.Equals("Open"))
                        _conexion.Close();
               
                _conexion.ConnectionString = GetCadenaConexion();
                _conexion.Open();
            }
            catch (SqlException)
            {
                throw;
            }
        }

        /// <summary>
        /// Metodo que permite cerrar la conexion a la base de datos
        /// </summary>
        public void CerrarConexionBd()
        {
            String estadoConexion = null;
            estadoConexion = _conexion.State.ToString();
 
            if (estadoConexion.Equals("Open"))
            
                _conexion.Close(); 
        } 

        public SqlConnection ObjetoConexion()
        {
            return (_conexion);
        }

        #endregion
    

    }
}
